package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	/*
		生成随机数 random：
			伪随机数，根据一定的算法公式算出来的
		在 math/rand 包下
	*/
	num1 := rand.Int()
	fmt.Println(num1)

	//如果没有手动设置种子数，种子数是固定的，每次产生的随机数都是相同的

	for i := 0; i < 10; i++ {
		num := rand.Intn(10) //产生的随机数在 [0,10) 区间内
		fmt.Println(num)
	}

	rand.Seed(1000)
	num2 := rand.Intn(10)
	fmt.Println("——>", num2)

	t1 := time.Now()       //返回的是一个 time.Time 对象
	fmt.Println(t1)        //打印的是当前的时间
	fmt.Printf("%T\n", t1) //time.Time
	// 时间戳：指定时间，距离 1970 年 1 月 1 日 0 点 0 分 0 秒，之间的时间差值：秒，纳秒
	timeStamp1 := t1.Unix() // 秒
	fmt.Println(timeStamp1)

	timeStamp2 := t1.UnixNano() // 纳秒
	fmt.Println(timeStamp2)

	//推荐写法：
	//step1：设置种子数，可以设置成时间戳（为了让种子数不停地变化）
	rand.Seed(time.Now().UnixNano())
	for i := 0; i < 10; i++ {
		//step2：调用生成随机数的函数
		fmt.Println("——>", rand.Intn(100))
	}

	/*
		Intn(n) //获取 [0,n) 之间的随机数
		[15,76] ——> [0,61]+15
		[3,48] ——> [0,45] + 3
	*/
	num3 := rand.Intn(46) + 3 // [3,45]
	fmt.Println(num3)
	num4 := rand.Intn(62) + 15 // [15, 76]
	fmt.Println(num4)
}
